<?php

declare(strict_types=1);

namespace App\CustHub\Model;

use Hyperf\Database\Model\Relations\HasOne;
use Mine\MineModel;

/**
 * @property int $id 
 * @property int $uid 私域用户ID
 * @property int $main_uid 主用户ID
 * @property string $corp_id 企业ID 预留
 * @property string $code 席位标识
 * @property int $status 席位状态：0=禁用 1=正常 2=已过期
 * @property int $use_status 使用状态：0=待使用 1=已使用
 * @property int $expire_time 到期时间
 * @property int $type 0 个微 1 企微
 * @property int $is_auto_renewal 自动续费：0=否1=是
 * @property int $server_id 服务器ID
 * @property int $seat_type 席位类型：0=基础席位 1=互通账号
 * @property string $auth_corp_id 购买企业id
 * @property string $order_id 购买接口许可证返回的订单ID
 * @property string $bind_time 绑定时间
 * @property string $change_bind_time 换绑时间
 * @property string $userid 成员用户ID
 * @property \Carbon\Carbon $created_at 创建时间
 * @property \Carbon\Carbon $updated_at 使用时间
 * @property-read null|ChCorp $corp 
 * @property-read null|ChRobot $robot 
 */
class ChSeat extends MineModel
{
    /**
     * The table associated with the model.
     */
    protected ?string $table = 'ch_seat';

    /**
     * The attributes that are mass assignable.
     */
    protected array $fillable = ['id', 'uid', 'main_uid', 'corp_id', 'code', 'status', 'use_status', 'expire_time', 'type', 'is_auto_renewal', 'server_id', 'seat_type', 'auth_corp_id', 'order_id', 'bind_time', 'change_bind_time', 'userid', 'created_at', 'updated_at'];

    /**
     * The attributes that should be cast to native types.
     */
    protected array $casts = ['id' => 'integer', 'uid' => 'integer', 'main_uid' => 'integer', 'status' => 'integer', 'use_status' => 'integer', 'expire_time' => 'integer', 'type' => 'integer', 'is_auto_renewal' => 'integer', 'server_id' => 'integer', 'seat_type' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime'];

    /**
     * 机器人
     * @return HasOne
     */
    public function robot(): HasOne
    {
        return $this->hasOne(ChRobot::class, 'seat_id', 'id');
    }

    public function corp():HasOne
    {
        return $this->hasOne(ChCorp::class, 'id', 'corp_id');
    }


    public function htRobot(): HasOne
    {
        return $this->hasOne(ChRobot::class, 'ht_seat_id', 'id');
    }
}
